package cn.pupil.springframework.beans.factory.support;

import cn.pupil.springframework.beans.BeansException;
import cn.pupil.springframework.core.io.Resource;
import cn.pupil.springframework.core.io.ResourceLoader;

/**
 * @Description: Bean 定义读取接口
 * @Author: pupil
 * @Date: 2024/11/4 下午 5:06
 */
public interface BeanDefinitionReader {

    /**
     * 获取bean定义注册工厂
     *
     * @return BeanDefinitionRegistry
     */
    BeanDefinitionRegistry getRegistry();

    /**
     * 获取资源加载器
     *
     * @return ResourceLoader
     */
    ResourceLoader getResourceLoader();

    /**
     * 加载bean定义
     *
     * @param resource 资源
     * @throws BeansException
     */
    void loadBeanDefinitions(Resource resource) throws BeansException;

    /***
     * 加载多个bean定义
     * @param resources 多个资源
     * @throws BeansException
     */
    void loadBeanDefinitions(Resource... resources) throws BeansException;

    /**
     * 通过资源位置加载bean定义
     *
     * @param location 资源位置
     * @throws BeansException
     */
    void loadBeanDefinitions(String location) throws BeansException;

    /**
     * 通过资源位置集合加载bean定义
     * @param locations 资源位置
     * @throws BeansException
     */
    void loadBeanDefinitions(String... locations) throws BeansException;
}
